package com.koron.order.risk.base.bean.po;

import com.koron.bean.annocation.FillField;
import com.koron.order.risk.riskDuty.bean.vo.LineRiskDutyVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;
import java.util.Objects;

/**
 * 风险管控单-管控措施(LineRiskMeasure)表实体类
 *
 * @author jzp
 * @since 2022-12-15
 */
@Data
@ApiModel(value="风险管控单-管控措施", description = "LineRiskMeasure")
public class LineRiskMeasure {

    /**
     * id
     */
    @FillField
    @ApiModelProperty("id")
    private String id;

    /**
     * 风险管控单id
     */
    @ApiModelProperty("风险管控单id")
    private String riskId;

    /**
     * 管控措施 risk_control_measures
     */
    @ApiModelProperty("管控措施 risk_control_measures")
    private String controlMeasures;

    /**
     * 责任人id
     */
    @ApiModelProperty("责任人id")
    private String leaderId;

    /**
     * 责任人名称
     */
    @ApiModelProperty("责任人名称")
    private String leaderName;

    /**
     * 责任部门id
     */
    @ApiModelProperty("责任部门id")
    private String leaderDeptId;

    /**
     * 责任部门名称
     */
    @ApiModelProperty("责任部门名称")
    private String leaderDeptName;

    /**
     * 计划完成时间
     */
    @ApiModelProperty("计划完成时间")
    private Date planFinishTime;

    /**
     * 是否落实，0否1是
     */
    @ApiModelProperty("是否落实，0否1是")
    private Integer implemented;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
    private String remark;

    /**
     * 状态 0未超期 1已超期
     *
     */
    @ApiModelProperty("状态 0未超期 1已超期")
    private String status;

    /**
     * 排序号
     */
    @ApiModelProperty("排序号")
    private Integer sort;

    /**
     * 创建时间
     */
    @FillField
    @ApiModelProperty("创建时间")
    private Date createTime;

    /**
     * 创建人账号
     */
    @FillField
    @ApiModelProperty("创建人账号")
    private String createBy;

    // 是否有新增看护值守单
    @ApiModelProperty("是否有新增看护值守单")
    private Integer hasAddDuty;

    // 已新增的看护值守单
    @ApiModelProperty("看护值守单")
    private LineRiskDutyVO lineRiskDutyVO;

    public Integer getNoNanImplemented() {
        if (getImplemented() == null) {
            return 0;
        }
        return getImplemented();
    }

    /**
     * （1）已超期
     * （0）未超期
     */
    public String getStatus() {
        if (Objects.equals(status, "1")) {
            return "1";
        }
        if (planFinishTime == null) {
            return null;
        }
        Date date = new Date();
        // 如果当前时间大于计划完成时间且未落实，则已超期
        if (date.after(planFinishTime) && getNoNanImplemented() == 0) {
            status = "1";
            return "1";
        }
        return "0";
    }

}
